home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 0.9.1.3 stable / flock-0.9.1.3.en-US.win32.exe / flock / chrome / browser.jar / content / browser / bookmarks / bookmarksCommonFeatures.js < prev    next >
Text File  |  2007-07-10  |  8KB  |  264 lines

  1. var gBookmarksTree;
  2. var gExpander;
  3. var gSelectedFolder;
  4. var WSucks;
  5. var gMenulist;
  6. var prefs;
  7.  
  8. function common_init()
  9. {
  10.   gBookmarksTree =  document.getElementById("folder-tree"); 
  11.   gExpander = document.getElementById("expander");
  12.   WSucks = parseInt(gBookmarksTree.getAttribute("height"));
  13.   gMenulist = document.getElementById("select-menu");
  14.   if (!WSucks)
  15.     WSucks = 150;
  16.   
  17.   prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  18.   if(!prefs.getBoolPref("flock.favorites.loadPageInSidebar"))
  19.   {
  20.     $("webpanel").hidden = true;
  21.   }
  22.   var btfMenuItem = document.getElementById("btfMenuItem");
  23.   btfMenuItem.id = BMSVC.getBookmarksToolbarFolder().Value;
  24. }
  25. function initMenulist() {
  26.  
  27.   if ("folderURI" in gArg && gArg.folderURI != '') {
  28.     var folderItem = document.getElementById(gArg.folderURI);
  29.     if (folderItem)
  30.     {
  31.       gMenulist.selectedItem = folderItem;
  32.       $("createlocalcheck").checked = true
  33.     }
  34.   }
  35.   
  36.   gSelectedFolder = RDF.GetResource(gMenulist.selectedItem.id);
  37. }
  38.  
  39. function showParentFolder(resource)
  40. {
  41.   var coop = Components.classes['@flock.com/singleton;1'].getService(Components.interfaces.flockISingleton)
  42.       .getSingleton('chrome://browser/content/flock/common/load-faves-coop.js')
  43.       .wrappedJSObject;
  44.  
  45.   var coopObj = BookmarksUtils.getflockUtilsObject().BookmarksShareUtils
  46.                               .getCoopObject(BMDS, resource);
  47.   var obj = coopObj.getParent();
  48.   var parents = coopObj.getParents();
  49.   for (var i=0; i<parents.length; i++)
  50.   {
  51.     if (!(parents[i] instanceof coop.Folder))
  52.       continue;
  53.     obj = findBookmarksImmediateRoot(parents[i], parents[i]);
  54.     if( obj != null)
  55.     {
  56.       break;
  57.     }
  58.     
  59.   }
  60.   if(obj)
  61.   {
  62.     document.getElementById('createlocalcheck').checked = true;
  63.     selectMenuItem(RDF.GetResource(obj.id()));  
  64.   }
  65. }
  66.  
  67. function findBookmarksImmediateRoot(currentRoot, parent)
  68. {
  69.   if(parent == null)
  70.   {
  71.     return null;
  72.   }else if(parent.id() == 'http://flock.com/rdf#OnlineFolder')
  73.   {
  74.     return null;
  75.   }
  76.   else if( parent.id() == 'http://flock.com/rdf#BookmarksRoot')
  77.   {
  78.     return currentRoot;
  79.   }else
  80.    
  81.     return findBookmarksImmediateRoot(currentRoot, parent.getParent())
  82. }
  83. function expandTree()
  84. {
  85.   setFolderTreeHeight();
  86.   var willCollapse = !gBookmarksTree.collapsed;
  87.   gExpander.setAttribute("class",willCollapse?"down":"up");
  88.   gExpander.setAttribute("tooltiptext", gExpander.getAttribute("tooltiptext"+(willCollapse?"down":"up")));
  89.   if (willCollapse) {
  90.     document.documentElement.buttons = "accept,cancel";
  91.     document.getElementById('newFolderArea').hidden = true;
  92.     WSucks = gBookmarksTree.boxObject.height + document.getElementById('newFolderArea').height;
  93.   } else {
  94.    document.getElementById('newFolderArea').hidden = false;
  95. //   always open the bookmark root folder
  96.     if (!gBookmarksTree.treeBoxObject.view.isContainerOpen(0))
  97.       gBookmarksTree.treeBoxObject.view.toggleOpenState(0);
  98.     selectFolder(gSelectedFolder);
  99.     gBookmarksTree.focus();
  100.   }
  101.   gBookmarksTree.collapsed = willCollapse;
  102.   resizeTo(window.outerWidth, window.outerHeight+(willCollapse?-WSucks:+WSucks+20));
  103. }
  104.  
  105. function setFolderTreeHeight()
  106. {
  107.   var isCollapsed = gBookmarksTree.collapsed;
  108.   if (!isCollapsed)
  109.     gBookmarksTree.setAttribute("height", gBookmarksTree.boxObject.height);
  110. }
  111.  
  112. function selectMenulistFolder(aEvent)
  113. {
  114.  
  115.   gSelectedFolder = RDF.GetResource(aEvent.target.id);
  116.   if (!gBookmarksTree.collapsed)
  117.     selectFolder(gSelectedFolder);
  118. }
  119. function selectFolder(aFolder)
  120. {
  121.   gBookmarksTree.treeBoxObject.view.selection.selectEventsSuppressed = true;
  122.   gBookmarksTree.treeBoxObject.view.selection.clearSelection();
  123.   gBookmarksTree.selectResource(aFolder);
  124.   var index = gBookmarksTree.currentIndex;
  125.   gBookmarksTree.treeBoxObject.ensureRowIsVisible(index);
  126.   gBookmarksTree.treeBoxObject.view.selection.selectEventsSuppressed = false;
  127. // triggers a select event that will provoke a call to selectTreeFolder()
  128. }
  129.  
  130. function selectTreeFolder()
  131. {
  132.   // If no item is selected, we obviously can't do anything with the selection.
  133.   // This happens when the bookmarks tree rebuilds, since the rebuild starts
  134.   // by removing all items from the tree, including the currently selected item,
  135.   // and removing the selection also triggers the "select" handler which calls
  136.   // this function.
  137.   if (gBookmarksTree.currentIndex == -1)
  138.    return
  139.   
  140.   var resource = gBookmarksTree.currentResource;
  141.   if (resource == gSelectedFolder)
  142.     return;
  143.   selectMenuItem(resource);
  144. }
  145. function selectMenuItem(resource)
  146. {
  147.   gSelectedFolder = resource;
  148.   var menuitem = document.getElementById(gSelectedFolder.Value);
  149.   if(gSelectedFolder.Value == 'http://flock.com/rdf#BookmarksRoot')
  150.   {
  151.     gMenulist.selectedIndex = 0;
  152.     return;
  153.   }else
  154.   {
  155.     gMenulist.selectedItem = menuitem;
  156.   }
  157.    if (!menuitem) {
  158.     gMenulist.removeItemAt(gMenulist.firstChild.childNodes.length-1);
  159.     var newItem = gMenulist.appendItem(BookmarksUtils.getProperty(gSelectedFolder, gNC_NS+"Name"), gSelectedFolder.Value);
  160.     newItem.setAttribute("class", "menuitem-iconic folder-icon");
  161.     newItem.setAttribute("id", gSelectedFolder.Value);
  162.     gMenulist.selectedItem = newItem;
  163.   }
  164. }
  165. function newFolder()
  166. {
  167.   gBookmarksTree.focus();
  168.   // we should use goDoCommand, but the current way of inserting
  169.   // resources do not insert in folders.
  170.   //goDoCommand("cmd_bm_newfolder");
  171.   var target = BookmarksUtils.getTargetFromFolder(gSelectedFolder);
  172.   var folder = BookmarksCommand.createNewFolder(target);
  173.   if (!BMSVC.isBookmarkedResource(folder))
  174.     return; // new folder cancelled
  175.   selectFolder(folder);
  176. }
  177.  
  178. function setDoEverytime()
  179. {
  180.   if ($('publishLocations').checked ) {
  181.     if(document.getElementById("shareArea").getAttribute("hidden") != "true")
  182.     {
  183.       saveShareSettings($('bmServices-box'));
  184.     }
  185.     prefs.setBoolPref("flock.favorites.do.local", $("createlocalcheck").checked);
  186.     if($("createlocalcheck").checked)
  187.     {
  188.       prefs.setCharPref("flock.favorites.do.folder", $("select-menu").selectedItem.id);
  189.     }
  190.   }
  191. }
  192.  
  193. function loadDoEverytime()
  194. {
  195.   var local = prefs.getBoolPref("flock.favorites.do.local");
  196.   
  197.   if(!loadShareSettings())
  198.   {
  199.     $("createlocalcheck").setAttribute('checked', true);
  200.   }
  201.   if(local)
  202.   {
  203.     $("createlocalcheck").setAttribute('checked', true);
  204.     var folder = prefs.getCharPref("flock.favorites.do.folder");
  205.     if(folder  && folder != '')
  206.     {
  207.       selectMenuItem(RDF.GetResource(folder)); 
  208.     }
  209.   }
  210. }
  211.  
  212. function initOnlineFavoritesObservor()
  213. {
  214.   var rdfService = Components.classes[kRDFContractID].getService(kRDFSVCIID);
  215.   var accountsDS = rdfService.GetDataSource("rdf:flock-favorites");
  216.   accountsDS.AddObserver(onlineFavoritesObserver);
  217.   toggleOnlineArea();
  218. }
  219. function uninitOnlineFavoritesObservor()
  220. {
  221.   var rdfService = Components.classes[kRDFContractID].getService(kRDFSVCIID);
  222.   var accountsDS = rdfService.GetDataSource("rdf:flock-favorites");
  223.    accountsDS.RemoveObserver(onlineFavoritesObserver);
  224. }
  225. /* Online Sidebar and Favorites Toggle for decks */
  226. var onlineFavoritesObserver =  {
  227.    /*
  228.    Observer for the AccountsRoot rdf
  229.    */
  230.   onAssert            : function(ds, source, predicate, target){
  231.     if (predicate.Value == "http://flock.com/rdf#isTransient") {
  232.       toggleOnlineArea();
  233.     }
  234.   },
  235.   onUnassert          : function(ds, source, predicate, target){
  236.     if (source.Value == "http://flock.com/rdf#AccountsRoot") {
  237.     toggleOnlineArea();
  238.     }
  239.   },
  240.   onChange            : function(ds, source, predicate, oldTarget, newTarget){
  241.     if ((predicate.Value == "http://flock.com/rdf#isAuthenticated") ||
  242.         (predicate.Value == "http://flock.com/rdf#isTransient") ) {
  243.      toggleOnlineArea();
  244.     }
  245.   },
  246.   onMove              : function(ds, oldSource, newSource, predicate, target){},
  247.   onBeginUpdateBatch  : function(ds){},
  248.   onEndUpdateBatch    : function(ds){},
  249. }
  250.  
  251. function toggleOnlineArea()
  252. {
  253.   var acUtils = Components.classes["@flock.com/account-utils;1"]
  254.                           .getService(Components.interfaces.flockIAccountUtils);
  255.   var accounts = acUtils.getAccountsByInterface("flockIBookmarkWebService");
  256.   if(accounts.hasMoreElements()) 
  257.   {
  258.     document.getElementById('onlineBookmarksDeck').setAttribute("selectedIndex","0");
  259.   }else
  260.   {
  261.     document.getElementById('onlineBookmarksDeck').setAttribute("selectedIndex","1");
  262.   }
  263. }
  264.